package testUnit;

import static org.junit.Assert.*;
import junit.framework.TestCase;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import classes_metier.CarteGraphique;
import classes_metier.DisqueDur;


import blueJ.*;

public class ComposantTest extends TestCase{
	private Ordinateur pc1, pc2;
	private Composant c1, c2, c3, c4, c5;
	
	public ComposantTest(){};
	
	@Before
    public void setUp()
    {
    	pc1 = new Ordinateur("Asus", "Tartempion");
    	pc2 = new Ordinateur("Vaio", "Trucmuche");
    	c1 = new CarteGraphique("NVidia");
    	c2 = new CarteGraphique("ATI");
    	c3 = new DisqueDur("Dell",250);
    	c4 = new DisqueDur("Seagate",320);
    	c5 = new DisqueDur("Hitachi",500);
    }
	
    @Test
    public void testInstallation(){
    	// Installer une carte graphique et un disque dur sur le pc1
    	assertTrue(c1.installer(pc1));
    	assertTrue(c3.installer(pc1));
    	assertFalse(c3.installer(pc1));
    	
    	// Installer une carte graphique et 2 disques dur sur le pc2
    	assertTrue(c2.installer(pc2));
    	assertTrue(c4.installer(pc2));
    	assertTrue(c5.installer(pc2));
    	
    	// On ne peut pas installer un composant deja integre dans un autre pc
    	assertFalse(c2.installer(pc1));
    }
    
    @Test
    public void testDesinstallation(){
    	c1.installer(pc1);
    	//System.out.println(c1.getOrdinateur().toString());
    	assertTrue(c1.desinstaller());
    }
    
    @Test
    public void testExtractMethod(){
    	extractMethod(c1, pc1);
    }

	public void extractMethod(Composant c, Ordinateur o){
		assertTrue(c.installer(o));
    	assertEquals(o.getComposant(c.getIdentite()), c);
	}
	
	@After
    public void tearDown()
    {
    }
}
